#ifndef PAINTING_H
#define PAINTING_H

#include <vector>
#include <exception>
#include "Utility.h"
#include "AnalysisConfig.h"
#include "FitMethods/FitInput.h"
#include "FitMethods/FitResult.h"
#include "IOmanager.h"

using namespace std;
using namespace FitMethods;

namespace Paint {

    class Painting {
        private:
            /*AnalysisConfig config;
            FitInput fitinput;
            FitResult fitresult;*/
            GarbageCollector * gc;
        public:
            Painting(GarbageCollector * gc) {
                this->gc = gc;
                if(gc!=NULL) gc->add(this);
            }
            virtual void draw(AnalysisConfig config, FitInput fitinput, FitResult fitresult);
    };

}

class PaintingException : public std::exception {
    string desc;
    public:
    PaintingException(string _desc) {
        desc=_desc;
    }
    virtual const char * what() const throw() {
        return desc.c_str();
    }
    ~PaintingException() throw () {}
};

#endif
